#include<iostream>
#include<map>

using namespace std;

//饿汉模式
//饿汉模式：提前（main函数启动时）创建好实例对象
//优点：实现简单
//缺点：可能导致进程启动慢，如果两个单例有启动先后顺序，那么饿汉无法控制

//懒汉模式：第一次用的时候再创建实例对象
//class A
//{
//public:
//
//    static A* GetInstance()
//    {
//        return _inst;
//    }
//
//    void add(const string& str)
//    {
//        _dict[str]++;
//    }
//    void print()
//    {
//        for(auto& e:_dict)
//        {
//            cout<<e.first<<":"<<e.second<<endl;
//        }
//    }
//private:
//    A(){}
//
//    map<string,int> _dict;
//    int _n=0;
//    static A* _inst;//静态成员是属于类的，不属于对象的
//};
//A* A::_inst=new A();
//
//
//
//class B
//{
//public:
//
//    static B* GetInstance()
//    {
//        if(_inst==nullptr)
//        {
//            _inst=new B;
//        }
//        return _inst;
//    }
//
//    void add(const string& str)
//    {
//        _dict[str]++;
//    }
//    void print()
//    {
//        for(auto& e:_dict)
//        {
//            cout<<e.first<<":"<<e.second<<endl;
//        }
//    }
//    static void Destroy()
//    {
//        if(_inst)
//        {
//        delete _inst;
//        _inst=nullptr;
//        }
//    }
//private:
//    B(){}
//
//    map<string,int> _dict;
//    int _n=0;
//    static B* _inst;//静态成员是属于类的，不属于对象的
//
//    class gc
//    {
//    public:
//        ~gc()
//        {
//            Destroy();
//        }
//    };
//    static gc _gc;
//};
//B* B::_inst=nullptr;
//B::gc B::_gc;

//int main()
//{
//    B::GetInstance()->add("苹果");
//    B::GetInstance()->add("苹果");
//    B::GetInstance()->add("葡萄");
//
//    B::GetInstance()->print();
//
//    //如何去释放懒汉模式创建的new对象
//    //用内部类gc去解决的
//
//    return 0;
//}
class A
{
public:
    operator int()//在A里面重载了int
    {
        return 1;
    }
};
int main()
{
    A a;
    int b=a;
}
